package cn.zhfeat.hatch.service;

import java.util.List;

import cn.zhfeat.core.base.interfaces.IBaseService;
import cn.zhfeat.core.shiro.bean.ShiroSysAuthorityBean;
import cn.zhfeat.hatch.dto.sysuser.SysAuthorityDto;
import cn.zhfeat.hatch.dto.sysuser.SysUserDto;
import cn.zhfeat.hatch.dto.sysuser.SysUserRoleDto;
import cn.zhfeat.hatch.entity.sysuser.SysUser;
import cn.zhfeat.hatch.entity.sysuser.SysUserAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysUserRole;
import com.github.pagehelper.PageInfo;


/**
 * @description: 用户相关信息
 *
 * @author ZhangHao
 * @date 2018年5月2日 下午5:50:46 
 * @version 1.0.0.1
 */
public interface ISysUserService extends IBaseService<SysUser, SysUserDto, Long> {
	
	/**
	 * @description: 名片列表页 - 新建名片 - 弹框列表 - 分页数据
	 *
	 * @param dto
	 * @author Yangcl
	 * @date 2018年5月3日 上午11:54:14 
	 * @version 1.0.0.1
	 */
	public PageInfo<SysUser> dialogAjaxPageListByDto(SysUserDto dto);

	/**
	 * @description: 根据Long userId 查询用户角色关联信息|查询条件不符则返回null
	 * 原方法:public List<SysUserRole> selectUserRoles(Long userId);
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月7日 下午1:42:06 
	 * @version 1.0.0.1
	 */
	public List<SysUserRole> selectSysUserRoles(SysUserRoleDto dto);

	/**
	 * @description: 根据用户id更新用户角色对应关系，如果用户id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 * 原方法:public Boolean deleteUserRoles(Long userId);
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月7日 下午1:50:14 
	 * @version 1.0.0.1
	 */
	public Integer updateSysUserRolesByType(SysUserRoleDto dto);

	/**
	 * @description: 增加用户和角色的对应关系并返回自增ID
	 * 原方法:public Boolean createUserRole(SysUserRole sysUserRole);
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月7日 下午2:24:24 
	 * @version 1.0.0.1
	 */
	public int insertUserRoles(SysUserRole entity);

	/**
	 * @description: 用户概要信息查询接口 - 查询用户、角色、部门
	 * 原方法:public Map<String, Object> selectSysUserDetail(Long id) 
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月7日 下午4:51:54 
	 * @version 1.0.0.1
	 */
	public SysUser findUserInfoForDetailByDto(SysUserDto dto);


	/**
	 * @description: 查询用户对应的一组特征属性
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月10日 下午1:23:00 
	 * @version 1.0.0.1
	 */
	public List<SysUser> findUserAttributeByDto(SysUserDto dto);

	/**
	 * @description:增加用户对应的数据特征属性 
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月10日 下午1:27:33 
	 * @version 1.0.0.1
	 */
	public int inserttUserAttribute(SysUserAttribute entity);

	/**
	 * @description: 更新用户对应的数据特征属性
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月10日 下午1:29:25 
	 * @version 1.0.0.1
	 */
	public Integer updateUserAttribute(SysUserAttribute entity);

	/**
	 * @description: 菜单使用的临时方法
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月20日 下午2:31:52 
	 * @version 1.0.0.1
	 */
	public List<ShiroSysAuthorityBean> findMenuListByDto(SysAuthorityDto dto);

	/**
	 * @description: 根据用户名称 模糊查询
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年7月1日 下午1:32:07 
	 * @version 1.0.0.1
	 */
	List<SysUser> userListByLikeName(SysUserDto dto);
	
}
